[INFO] fetching crate atat 0.24.1...
[INFO] fixing atat-0.24.1 against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] extracting crate atat 0.24.1 into /workspace/builds/worker-7-tc2/source
[INFO] started tweaking crates.io crate atat 0.24.1
[INFO] finished tweaking crates.io crate atat 0.24.1
[INFO] tweaked toml for crates.io crate atat 0.24.1 written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate atat 0.24.1 on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 77 packages to latest compatible versions
[INFO] [stderr]       Adding defmt v0.3.100 (available: v1.1.0)
[INFO] [stderr]       Adding embassy-sync v0.6.2 (available: v0.8.0)
[INFO] [stderr]       Adding embassy-time v0.4.0 (available: v0.5.1)
[INFO] [stderr]       Adding embedded-io v0.6.1 (available: v0.7.1)
[INFO] [stderr]       Adding embedded-io-async v0.6.1 (available: v0.7.0)
[INFO] [stderr]       Adding heapless v0.8.0 (available: v0.9.3)
[INFO] [stderr]       Adding heapless-bytes v0.4.0 (available: v0.5.0)
[INFO] [stderr]       Adding nom v7.1.3 (available: v8.0.0)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 21155e5c9cead6d2ed1dcc80d65db7ed092f5cf9e0fbff2fa79f6fdefc6904c6
[INFO] running `Command { std: "docker" "start" "21155e5c9cead6d2ed1dcc80d65db7ed092f5cf9e0fbff2fa79f6fdefc6904c6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "21155e5c9cead6d2ed1dcc80d65db7ed092f5cf9e0fbff2fa79f6fdefc6904c6" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "21155e5c9cead6d2ed1dcc80d65db7ed092f5cf9e0fbff2fa79f6fdefc6904c6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "21155e5c9cead6d2ed1dcc80d65db7ed092f5cf9e0fbff2fa79f6fdefc6904c6" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling heapless v0.8.0
[INFO] [stderr]     Checking futures-core v0.3.32
[INFO] [stderr]     Checking hash32 v0.3.1
[INFO] [stderr]     Checking futures-sink v0.3.32
[INFO] [stderr]    Compiling embassy-executor v0.7.0
[INFO] [stderr]     Checking futures-task v0.3.32
[INFO] [stderr]     Checking critical-section v1.2.0
[INFO] [stderr]     Checking hash32 v0.2.1
[INFO] [stderr]    Compiling heapless v0.7.17
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]    Compiling embedded-io-async v0.6.1
[INFO] [stderr]    Compiling embassy-time-queue-utils v0.1.0
[INFO] [stderr]     Checking nb v1.1.0
[INFO] [stderr]    Compiling embedded-hal-async v1.0.0
[INFO] [stderr]    Compiling syn v2.0.118
[INFO] [stderr]    Compiling embassy-time-driver v0.2.2
[INFO] [stderr]     Checking nb v0.1.3
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking embedded-hal v1.0.0
[INFO] [stderr]     Checking embedded-io v0.6.1
[INFO] [stderr]    Compiling embassy-sync v0.6.2
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling portable-atomic v1.13.1
[INFO] [stderr]     Checking void v1.0.2
[INFO] [stderr]     Checking futures-channel v0.3.32
[INFO] [stderr]     Checking embedded-hal v0.2.7
[INFO] [stderr]     Checking minimal-lexical v0.2.1
[INFO] [stderr]     Checking memchr v2.8.2
[INFO] [stderr]     Checking futures-io v0.3.32
[INFO] [stderr]     Checking embassy-futures v0.1.2
[INFO] [stderr]     Checking nom v7.1.3
[INFO] [stderr]     Checking static_cell v2.1.1
[INFO] [stderr]     Checking futures v0.3.32
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]     Checking serde_bytes v0.11.19
[INFO] [stderr]     Checking heapless-bytes v0.3.0
[INFO] [stderr]    Compiling serde_at v0.24.1
[INFO] [stderr]     Checking heapless-bytes v0.4.0
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling atat_derive v0.24.1
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]     Checking tokio v1.52.3
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling embassy-executor-macros v0.6.2
[INFO] [stderr]     Checking embassy-time v0.4.0
[INFO] [stderr]     Checking atat v0.24.1 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/ingress.rs (2 fixes)
[INFO] [stderr]        Fixed src/asynch/client.rs (1 fix)
[INFO] [stderr]        Fixed src/fmt.rs (8 fixes)
[INFO] [stderr]        Fixed src/blocking/client.rs (1 fix)
[INFO] [stderr]        Fixed src/derive.rs (1 fix)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]   --> src/ingress.rs:66:19
[INFO] [stdout]    |
[INFO] [stdout] 66 |             match serial.read(buf).await {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]    |                   |                |
[INFO] [stdout]    |                   |                this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]    |                   |                up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]    |                   |                this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]    |                   |                `#1` will be dropped later as of Edition 2024
[INFO] [stdout]    |                   this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]    |                   up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]    |                   `__awaitee` calls a custom destructor
[INFO] [stdout]    |                   `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 69 |                         self.advance(received).await;
[INFO] [stdout]    |                         ----------------------------
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]    |                         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 72 |                 Err(e) => {
[INFO] [stdout]    |                     -
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     `e` calls a custom destructor
[INFO] [stdout]    |                     `e` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 77 |         }
[INFO] [stdout]    |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]    = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/ingress.rs:256:43
[INFO] [stdout]     |
[INFO] [stdout] 247 |                     match Urc::parse(urc_line) { Some(urc) => {
[INFO] [stdout]     |                           --------------------
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                           `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 256 |                         if let Err(urc) = self.urc_publisher.try_publish(urc) {
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                           up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 257 |                             self.urc_publisher.publish(urc).await;
[INFO] [stdout]     |                             -------------------------------------
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             `__awaitee` calls a custom destructor
[INFO] [stdout]     |                             `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] 258 |                         }
[INFO] [stdout] 259 |                     } _ => {
[INFO] [stdout]     |                     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/ingress.rs:483:50
[INFO] [stdout]     |
[INFO] [stdout] 483 |                         tokio::task::yield_now().await
[INFO] [stdout]     |                         -------------------------^^^^^
[INFO] [stdout]     |                         |                        |
[INFO] [stdout]     |                         |                        this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                         |                        up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                         `__awaitee` calls a custom destructor
[INFO] [stdout]     |                         `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] 484 |                     }
[INFO] [stdout]     |                     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]   --> src/asynch/mod.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 25 |             match self.send(cmd).await {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^-----
[INFO] [stdout]    |                   |              |
[INFO] [stdout]    |                   |              this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]    |                   |              up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]    |                   |              this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]    |                   |              `#1` will be dropped later as of Edition 2024
[INFO] [stdout]    |                   this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]    |                   up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]    |                   `__awaitee` calls a custom destructor
[INFO] [stdout]    |                   `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 34 |         }
[INFO] [stdout]    |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/digest.rs:316:69
[INFO] [stdout]     |
[INFO] [stdout] 315 |               if let Ok((buf, ((prefix, p), ws, _))) = tuple((
[INFO] [stdout]     |  ______________________________________________________-
[INFO] [stdout] 316 | |                 take_until_including::<_, _, nom::error::Error<_>>(&[*prompt][..]),
[INFO] [stdout]     | |                                                                     ^^^^^^^^^ this temporary value will be dropped at the end of the block
[INFO] [stdout] 317 | |                 complete::multispace0,
[INFO] [stdout] 318 | |                 eof,
[INFO] [stdout] 319 | |             ))(buf)
[INFO] [stdout]     | |______________- a temporary with access to the borrow is created here ...
[INFO] [stdout] ...
[INFO] [stdout] 329 |           }
[INFO] [stdout]     |           - ... and the borrow might be used here, when that temporary is dropped and runs the destructor for type `impl FnMut(&[u8]) -> Result<(&[u8], ((&[u8], &[u8]), &[u8], &[u8])), nom::Err<nom::error::Error<&[u8]>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] help: consider adding semicolon after the expression so its temporaries are dropped sooner, before the local variables declared by the block are dropped
[INFO] [stdout]     |
[INFO] [stdout] 328 |             };
[INFO] [stdout]     |              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/asynch/client.rs:187:58
[INFO] [stdout]     |
[INFO] [stdout] 187 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 208 |             setup!(Config::new().get_response_timeout(custom_response_timeout));
[INFO] [stdout]     |             ------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `--force-warn static-mut-refs` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout]     = note: this warning originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/asynch/client.rs:187:58
[INFO] [stdout]     |
[INFO] [stdout] 187 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 254 |             setup!(Config::new().get_response_timeout(custom_response_timeout));
[INFO] [stdout]     |             ------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this warning originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 269 |         let (mut client, mut tx, rx) = setup!(Config::new());
[INFO] [stdout]     |                                        --------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this warning originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 290 |         let (mut client, mut tx, rx) = setup!(Config::new());
[INFO] [stdout]     |                                        --------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this warning originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 314 |         let (mut client, mut tx, rx) = setup!(Config::new());
[INFO] [stdout]     |                                        --------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this warning originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 350 |         let (mut client, mut tx, rx) = setup!(Config::new());
[INFO] [stdout]     |                                        --------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this warning originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 376 |         let (mut client, mut tx, rx) = setup!(Config::new());
[INFO] [stdout]     |                                        --------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this warning originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 442 |             setup!(Config::new().get_response_timeout(custom_response_timeout));
[INFO] [stdout]     |             ------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this warning originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 488 |             setup!(Config::new().get_response_timeout(custom_response_timeout));
[INFO] [stdout]     |             ------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this warning originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]   --> src/ingress.rs:66:19
[INFO] [stdout]    |
[INFO] [stdout] 66 |             match serial.read(buf).await {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^^^-----
[INFO] [stdout]    |                   |                |
[INFO] [stdout]    |                   |                this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]    |                   |                up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]    |                   |                this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]    |                   |                `#1` will be dropped later as of Edition 2024
[INFO] [stdout]    |                   this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]    |                   up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]    |                   `__awaitee` calls a custom destructor
[INFO] [stdout]    |                   `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 69 |                         self.advance(received).await;
[INFO] [stdout]    |                         ----------------------------
[INFO] [stdout]    |                         |
[INFO] [stdout]    |                         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]    |                         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 72 |                 Err(e) => {
[INFO] [stdout]    |                     -
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     `e` calls a custom destructor
[INFO] [stdout]    |                     `e` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 77 |         }
[INFO] [stdout]    |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]    = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 19.79s
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/ingress.rs:256:43
[INFO] [stdout]     |
[INFO] [stdout] 247 |                     match Urc::parse(urc_line) { Some(urc) => {
[INFO] [stdout]     |                           --------------------
[INFO] [stdout]     |                           |
[INFO] [stdout]     |                           this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                           `#1` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 256 |                         if let Err(urc) = self.urc_publisher.try_publish(urc) {
[INFO] [stdout]     |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                           up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] 257 |                             self.urc_publisher.publish(urc).await;
[INFO] [stdout]     |                             -------------------------------------
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             `__awaitee` calls a custom destructor
[INFO] [stdout]     |                             `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] 258 |                         }
[INFO] [stdout] 259 |                     } _ => {
[INFO] [stdout]     |                     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]   --> src/asynch/mod.rs:25:19
[INFO] [stdout]    |
[INFO] [stdout] 25 |             match self.send(cmd).await {
[INFO] [stdout]    |                   ^^^^^^^^^^^^^^^-----
[INFO] [stdout]    |                   |              |
[INFO] [stdout]    |                   |              this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]    |                   |              up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]    |                   |              this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]    |                   |              `#1` will be dropped later as of Edition 2024
[INFO] [stdout]    |                   this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]    |                   up until Edition 2021 `#2` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]    |                   `__awaitee` calls a custom destructor
[INFO] [stdout]    |                   `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 34 |         }
[INFO] [stdout]    |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]    |
[INFO] [stdout]    = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]    = warning: this changes meaning in Rust 2024
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/digest.rs:316:69
[INFO] [stdout]     |
[INFO] [stdout] 315 |               if let Ok((buf, ((prefix, p), ws, _))) = tuple((
[INFO] [stdout]     |  ______________________________________________________-
[INFO] [stdout] 316 | |                 take_until_including::<_, _, nom::error::Error<_>>(&[*prompt][..]),
[INFO] [stdout]     | |                                                                     ^^^^^^^^^ this temporary value will be dropped at the end of the block
[INFO] [stdout] 317 | |                 complete::multispace0,
[INFO] [stdout] 318 | |                 eof,
[INFO] [stdout] 319 | |             ))(buf)
[INFO] [stdout]     | |______________- a temporary with access to the borrow is created here ...
[INFO] [stdout] ...
[INFO] [stdout] 329 |           }
[INFO] [stdout]     |           - ... and the borrow might be used here, when that temporary is dropped and runs the destructor for type `impl FnMut(&[u8]) -> Result<(&[u8], ((&[u8], &[u8]), &[u8], &[u8])), nom::Err<nom::error::Error<&[u8]>>>`
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] help: consider adding semicolon after the expression so its temporaries are dropped sooner, before the local variables declared by the block are dropped
[INFO] [stdout]     |
[INFO] [stdout] 328 |             };
[INFO] [stdout]     |              +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] crater-edition-check: atat v0.24.1 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]     Checking atat v0.24.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `CmsError` and `ConnectionError`
[INFO] [stdout]    --> src/digest.rs:503:27
[INFO] [stdout]     |
[INFO] [stdout] 503 |         error::{CmeError, CmsError, ConnectionError},
[INFO] [stdout]     |                           ^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/config.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | #[derive(Debug, Copy, Clone, PartialEq, Eq)]
[INFO] [stdout]    |                              --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub(crate) get_response_timeout: GetTimeout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout]    = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/digest.rs:247:32
[INFO] [stdout]     |
[INFO] [stdout] 247 |     pub fn error_response(buf: &[u8]) -> IResult<&[u8], (DigestResult, usize)> {
[INFO] [stdout]     |                                ^^^^^             ^^^^^   ^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                |                 |
[INFO] [stdout]     |                                |                 the same lifetime is elided here
[INFO] [stdout]     |                                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 247 |     pub fn error_response(buf: &[u8]) -> IResult<&[u8], (DigestResult<'_>, usize)> {
[INFO] [stdout]     |                                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/digest.rs:313:33
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn prompt_response(buf: &[u8]) -> IResult<&[u8], (DigestResult, usize)> {
[INFO] [stdout]     |                                 ^^^^^             ^^^^^   ^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                 |                 |
[INFO] [stdout]     |                                 |                 the same lifetime is elided here
[INFO] [stdout]     |                                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn prompt_response(buf: &[u8]) -> IResult<&[u8], (DigestResult<'_>, usize)> {
[INFO] [stdout]     |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/digest.rs:336:34
[INFO] [stdout]     |
[INFO] [stdout] 336 |     pub fn success_response(buf: &[u8]) -> IResult<&[u8], (DigestResult, usize)> {
[INFO] [stdout]     |                                  ^^^^^             ^^^^^   ^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                  |                 |
[INFO] [stdout]     |                                  |                 the same lifetime is elided here
[INFO] [stdout]     |                                  the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 336 |     pub fn success_response(buf: &[u8]) -> IResult<&[u8], (DigestResult<'_>, usize)> {
[INFO] [stdout]     |                                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `InnerError` is never used
[INFO] [stdout]    --> src/blocking/client.rs:135:14
[INFO] [stdout]     |
[INFO] [stdout] 135 |     pub enum InnerError {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MessageWaitingIndication` is never constructed
[INFO] [stdout]    --> src/blocking/client.rs:238:16
[INFO] [stdout]     |
[INFO] [stdout] 238 |     pub struct MessageWaitingIndication {
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Urc` is never used
[INFO] [stdout]    --> src/blocking/client.rs:246:14
[INFO] [stdout]     |
[INFO] [stdout] 246 |     pub enum Urc {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function pointer comparisons do not produce meaningful results since their addresses are not guaranteed to be unique
[INFO] [stdout]   --> src/config.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout]  8 | #[derive(Debug, Copy, Clone, PartialEq, Eq)]
[INFO] [stdout]    |                              --------- in this derive macro expansion
[INFO] [stdout] ...
[INFO] [stdout] 13 |     pub(crate) get_response_timeout: GetTimeout,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: the address of the same function can vary between different codegen units
[INFO] [stdout]    = note: furthermore, different functions could have the same address after being merged together
[INFO] [stdout]    = note: for more information visit <https://doc.rust-lang.org/nightly/core/ptr/fn.fn_addr_eq.html>
[INFO] [stdout]    = note: `#[warn(unpredictable_function_pointer_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/digest.rs:247:32
[INFO] [stdout]     |
[INFO] [stdout] 247 |     pub fn error_response(buf: &[u8]) -> IResult<&[u8], (DigestResult, usize)> {
[INFO] [stdout]     |                                ^^^^^             ^^^^^   ^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                |                 |
[INFO] [stdout]     |                                |                 the same lifetime is elided here
[INFO] [stdout]     |                                the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]     = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 247 |     pub fn error_response(buf: &[u8]) -> IResult<&[u8], (DigestResult<'_>, usize)> {
[INFO] [stdout]     |                                                                      ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/digest.rs:313:33
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn prompt_response(buf: &[u8]) -> IResult<&[u8], (DigestResult, usize)> {
[INFO] [stdout]     |                                 ^^^^^             ^^^^^   ^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                 |                 |
[INFO] [stdout]     |                                 |                 the same lifetime is elided here
[INFO] [stdout]     |                                 the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 313 |     pub fn prompt_response(buf: &[u8]) -> IResult<&[u8], (DigestResult<'_>, usize)> {
[INFO] [stdout]     |                                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing
[INFO] [stdout]    --> src/digest.rs:336:34
[INFO] [stdout]     |
[INFO] [stdout] 336 |     pub fn success_response(buf: &[u8]) -> IResult<&[u8], (DigestResult, usize)> {
[INFO] [stdout]     |                                  ^^^^^             ^^^^^   ^^^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                  |                 |
[INFO] [stdout]     |                                  |                 the same lifetime is elided here
[INFO] [stdout]     |                                  the lifetime is elided here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: use `'_` for type paths
[INFO] [stdout]     |
[INFO] [stdout] 336 |     pub fn success_response(buf: &[u8]) -> IResult<&[u8], (DigestResult<'_>, usize)> {
[INFO] [stdout]     |                                                                        ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/asynch/client.rs:187:58
[INFO] [stdout]     |
[INFO] [stdout] 187 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 208 |             setup!(Config::new().get_response_timeout(custom_response_timeout));
[INFO] [stdout]     |             ------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: `#[deny(static_mut_refs)]` (part of `#[deny(rust_2024_compatibility)]`) on by default
[INFO] [stdout]     = note: this error originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/asynch/client.rs:187:58
[INFO] [stdout]     |
[INFO] [stdout] 187 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 254 |             setup!(Config::new().get_response_timeout(custom_response_timeout));
[INFO] [stdout]     |             ------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this error originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 269 |         let (mut client, mut tx, rx) = setup!(Config::new());
[INFO] [stdout]     |                                        --------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this error originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 290 |         let (mut client, mut tx, rx) = setup!(Config::new());
[INFO] [stdout]     |                                        --------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this error originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 314 |         let (mut client, mut tx, rx) = setup!(Config::new());
[INFO] [stdout]     |                                        --------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this error originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 350 |         let (mut client, mut tx, rx) = setup!(Config::new());
[INFO] [stdout]     |                                        --------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this error originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 376 |         let (mut client, mut tx, rx) = setup!(Config::new());
[INFO] [stdout]     |                                        --------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this error originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 442 |             setup!(Config::new().get_response_timeout(custom_response_timeout));
[INFO] [stdout]     |             ------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this error originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: creating a mutable reference to mutable static
[INFO] [stdout]    --> src/blocking/client.rs:262:58
[INFO] [stdout]     |
[INFO] [stdout] 262 |                 Client::new(tx_mock, &RES_SLOT, unsafe { BUF.as_mut() }, $config);
[INFO] [stdout]     |                                                          ^^^ mutable reference to mutable static
[INFO] [stdout] ...
[INFO] [stdout] 488 |             setup!(Config::new().get_response_timeout(custom_response_timeout));
[INFO] [stdout]     |             ------------------------------------------------------------------- in this macro invocation
[INFO] [stdout]     |
[INFO] [stdout]     = note: mutable references to mutable statics are dangerous; it's undefined behavior if any other pointer to the static is used or if any other reference is created for the static while the mutable reference lives
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/static-mut-references.html>
[INFO] [stdout]     = note: this error originates in the macro `setup` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `atat` (lib test) due to 9 previous errors; 8 warnings emitted
[INFO] running `Command { std: "docker" "inspect" "21155e5c9cead6d2ed1dcc80d65db7ed092f5cf9e0fbff2fa79f6fdefc6904c6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "21155e5c9cead6d2ed1dcc80d65db7ed092f5cf9e0fbff2fa79f6fdefc6904c6", kill_on_drop: false }`
[INFO] [stdout] 21155e5c9cead6d2ed1dcc80d65db7ed092f5cf9e0fbff2fa79f6fdefc6904c6
